<?php
function data2banco ($d2b) {

	if(!empty($d2b)){
		$d2b_ano=substr($d2b,6,4);
		$d2b_mes=substr($d2b,3,2);
		$d2b_dia=substr($d2b,0,2);
		$d2b="$d2b_ano-$d2b_mes-$d2b_dia";
	}
	return $d2b;
}

function banco2data($b2d) {

	if($b2d=="0000-00-00" or empty($b2d))
	{
		$b2d="";
		return $b2d;
	}
	else
	{
		$b2d_ano=substr($b2d,0,4);
		$b2d_mes=substr($b2d,5,2);
		$b2d_dia=substr($b2d,8,2);
		$b2d=$b2d_dia.'-'.$b2d_mes.'-'.$b2d_ano;
		return $b2d;
	}
}

function diferenca($data1,$data2) 
{
	
	$neg = false;
	
	$data1 = data2banco($data1);
	$data2 = data2banco($data2);
	if($data1 >= $data2)
	{
		$neg = true;
		$data3 = $data1;
		$data1 = $data2;
		$data2 = $data3;
	}
	
	$datetime1 = new DateTime($data1);
	$datetime2 = new DateTime($data2);
	$interval = $datetime1->diff($datetime2);
	return $interval->format('%a');
}

function dias_feriados($ano = null,$filtro = null)
{
	if ($ano === null)
	{
		$ano = intval(date('Y'));
	}

	$pascoa     = easter_date($ano); // Limite de 1970 ou após 2037 da easter_date PHP consulta http://www.php.net/manual/pt_BR/function.easter-date.php
	$dia_pascoa = date('j', $pascoa);
	$mes_pascoa = date('n', $pascoa);
	$ano_pascoa = date('Y', $pascoa);

	$feriados = array(
			// Tatas Fixas dos feriados Nacionail Basileiras
			mktime(0, 0, 0, 1,  1,   $ano), // Confraternização Universal - Lei nº 662, de 06/04/49
			mktime(0, 0, 0, 4,  21,  $ano), // Tiradentes - Lei nº 662, de 06/04/49
			mktime(0, 0, 0, 5,  1,   $ano), // Dia do Trabalhador - Lei nº 662, de 06/04/49
			mktime(0, 0, 0, 9,  7,   $ano), // Dia da Independência - Lei nº 662, de 06/04/49
			mktime(0, 0, 0, 10,  12, $ano), // N. S. Aparecida - Lei nº 6802, de 30/06/80
			mktime(0, 0, 0, 11,  2,  $ano), // Todos os santos - Lei nº 662, de 06/04/49
			mktime(0, 0, 0, 11, 15,  $ano), // Proclamação da republica - Lei nº 662, de 06/04/49
			mktime(0, 0, 0, 12, 25,  $ano), // Natal - Lei nº 662, de 06/04/49

			// These days have a date depending on easter
			mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 48,  $ano_pascoa),//2ºferia Carnaval
			mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 47,  $ano_pascoa),//3ºferia Carnaval
			mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 2 ,  $ano_pascoa),//6ºfeira Santa
			mktime(0, 0, 0, $mes_pascoa, $dia_pascoa     ,  $ano_pascoa),//Pascoa
			mktime(0, 0, 0, $mes_pascoa, $dia_pascoa + 60,  $ano_pascoa),//Corpus Cirist
	);

	sort($feriados);
	$saida = array();
	foreach($feriados as $a)
	{
		if($filtro)
		{
			$data_filtro = data2banco(date('m',mktime(0,0,0,$filtro,01,$ano)));
			$data_foreach = data2banco(date("m",$a));
			if($data_filtro == $data_foreach)
			{
				$saida[] = date("d-m-Y",$a);
			}
		}
		else $saida[] =  date("d-m-Y",$a);
	}
	return $saida;
	
}

function diaUtil($mes,$ano)
{
	$dia     = 1;
	$diaUtil = 1;
	$teste   = true;
	
	do {

		$diaSemana = date('w', mktime(0,0,0,$mes,$dia, $ano));

		if ($diaSemana != 0 && $diaSemana != 6) {
			if ($diaUtil < 5) {
				$diaUtil++;
			} else {
				break;
			}
		}

		$dia++;

	} while ($teste);
	
	$data = date('d-m-Y',mktime(0,0,0,$mes,$dia,$ano));
	
	$feriado = dias_feriados($ano,$mes);
	
	$plus = 0;
	foreach($feriado as $i => $v)
	{
		$ts = strtotime ( data2banco($v) );
		$dia_semana = date ( 'w', $ts );
		if(data2banco($data) >= data2banco($v))
		{
			if(!($dia_semana == 6 || $dia_semana == 0))
			{
				$plus++;
			}
		}
	}
	
	$dia = $dia + $plus;
	
	$data = date('d-m-Y',mktime(0,0,0,$mes,$dia,$ano));

	return $data;


}

function getValorCusto($dataInicio,$dataFim,$valores = array())
{
	
	$diferenca = diferenca ( $dataInicio, $dataFim );
	
	$ts = strtotime(data2banco($dataInicio));
	
	$dia_inicial_semana = date('w',$ts);
	$define = array ();
	for($i = 0; $i < $diferenca; $i ++) {
		$define [($dia_inicial_semana)] ++;
		$dia_inicial_semana ++;
		if ($dia_inicial_semana > 6) {
			$dia_inicial_semana = 0;
		}
	}
	$calculo = 0;
	$calculo += $define[0] * $valores[1];
	$calculo += $define[1] * $valores[0];
	$calculo += $define[2] * $valores[0];
	$calculo += $define[3] * $valores[0];
	$calculo += $define[4] * $valores[0];
	$calculo += $define[5] * $valores[1];
	$calculo += $define[6] * $valores[1];
	
	
	return $calculo;
}
?>
